package cn.tedu.micro.demo.client.demo01;

import cn.tedu.micro.demo.client.RabbitChannelManager;
import com.rabbitmq.client.Channel;
import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 先声明组件
 */
public class Declare {
    //声明一个叫做queue01的队列
    @Test
    public void queueDeclare() throws IOException, InterruptedException, TimeoutException {
        //1.从管理者拿到连接客户端
        Channel channel = RabbitChannelManager.newChannel();
        //2.声明一个队列 声明(在没有的时候 创建 add)
        /*
            String queue: 创建的队列名称,只能存在唯一名称
            Boolean durable: 队列是否持久化 true在rabbitmq重启之后 队列保持存在 false不存在
            Boolean exclusive: 队列是绑定当前连接对象(独占 专属) true别的链接无法操作队列 false所有连接都可以操作队列
            Boolean autoDelete: 队列是否自动删除 true队列从第一个监听消费者开始计算,到最后一个消费者断开连接,自动删除 false不删除
            Map<String,Object> args: 描述队列其他特性
            队列最大长度 x-max-length: 队列最多存放消息个数
            队列超时时间 x-expires: 队列在rabbitmq中,没有使用最大时长,达到删除
         */
        channel.queueDeclare(
                "queue02",
                false,
                false,
                false,
                null);
        //3.关闭连接 TODO
        channel.close();
        Thread.sleep(1000000);
    }
}
